function ret = korytarz_testowy(indeks_robota)

global mapa;
global roboty;

global w;  % wiersz
global k;  % kolumna

w=1;
k=2;
%pozycja(w) - wiersze
%pozycja(k) - kolumny
%taka notacja bedzie zachowana dla kazdgo wektora oznaczajacego pozycje na
%mapie, czyli pierwszy element oznacza wiersz w tablicy reprezentujacje
%mape a drugi element oznacza kolumne
pozycja(w)=roboty(indeks_robota).pozycja(2); % wiersz
pozycja(k)=roboty(indeks_robota).pozycja(1); % kolumna
persistent ilosc_produktow;
byl = 0; % flaga informujaca czy licznik jest juz przy przedmiocie z korytarza 
nastepny = [0 0]; %nastepny element poza naszym korytarzem [w k]
ostatni = [0 0]; % ostatni produkt w naszym korytarzu  [w k]
persistent end_p; % prawy koniec korytarza
persistent end_l;  % lewy koniec korytarza
odl_od_lewy = 0; %odleglosc od lewego konca korytarza do nastepnego produktu
odl_od_prawy = 0; %odleglosc od prawego konca korytarza do nastepnego produktu
global czekaj; % ile mamy czekac w korytarzu
indeks=indeks_robota;
sprawdzony=[];
max_odl = 0;
persistent wyjazd; % wspolrzedne miejsca z ktorego wyjezdzamy z korytarza 

                %[w k (0 - zaczynamy z prawej; 1 - zaczynamy z lewej)] 
%roboty(indeks).maska_korytarza=[0 0 0 0 0 0 0 0];
% sprawdzamy czy dopiero co nie wjechalismy do korytarza 
if (sum(roboty(indeks).maska_korytarza)==0) 
    ilosc_produktow=0; % bo jeszcze nie wiemy ile ich jest
   %ustalamy wspolrzedne koncow korytarza i rezerwujemy
           if (mapa(pozycja(w)-1,pozycja(k)-1))<1000 %lewa strona
               strona = 1; % lewa strona
               end_l=pozycja;  % wspolrzedne lewego konca korytarza
               end_p=pozycja;
               for i=1:8
                   % w korytarzach poruszamy sie zawsze po kolumnach
                   end_p(k)=pozycja(k)+i-1;
                   rezerwuj(1,indeks_robota,end_p);  %rezerwacja na mapie 
                   roboty(indeks).maska_korytarza(i)=indeks; %rezerwacja w masce
               end;
               end_p(w)=pozycja(w);
               % end_p(k)=pozycja(k)+7;% wspolrzedne prawego konca
               % korytarza
           elseif (mapa(pozycja(w)+1,pozycja(k)+1)<1000) %prawa strona
               strona = 0; %prawa strona
               end_p=pozycja ; % wspolrzedne prawego konca korytarza
               end_l=pozycja;
               for i=1:8
                   end_l(k)=pozycja(k)-i+1;  % bo poruszamy sie po kolumnach
                   rezerwuj(1,indeks_robota,end_l);  %rezerwacja na mapie 
                   roboty(indeks).maska_korytarza(8-i+1)=indeks;  %rezerwacja w masce
               end;
               % wspolrzedne lewego konca korytarza
              end_l(w)=pozycja(w);
               %end_l(k)=pozycja(k)-7
           end;
                
for i=1:size(roboty(indeks).produkty,2) %tyle ile musimy zabrac
        % sprawdzamy czy ten produkt jest w korytarzu:
        [nr_w nr_k czy_jest] = sprawdz_produkt(roboty(indeks).produkty(i),end_l);
       if (czy_jest==1) %jest
            % dopisujemy do tablicy indeksy tych produktow ktore sa w
            % korytarzu
            roboty(indeks).produkty_in(size(roboty(indeks).produkty_in,2)+1) = roboty(indeks).produkty(i);
            ostatni = [nr_w nr_k];  % ostatni produkt w korytarzu
            ilosc_produktow = ilosc_produktow+1; 
            byl =1; % czy byl ciag produktow z danego korytarza 1 - byl
       elseif (czy_jest==0 && byl == 1)
           nastepny= [nr_w nr_k]; % okreslenie nastepnego produktu poza korytarzem
           czekaj = 2*ilosc_produktow; %tyle musimy czekac
           byl=0;  % zerujemy zeby wziac tylko pierwszy produkt za korytarzem
       end;
end; % for  

     % liczymy odleglosc do nastepnego produktu od koncow korytarza
           odl_od_lewy=sqrt( (end_l(w)-nastepny(w))^2+(end_l(k)-nastepny(k))^2);
           odl_od_prawy=sqrt( (end_p(w)-nastepny(w))^2+(end_p(k)-nastepny(k))^2);
           
           if min(odl_od_lewy,odl_od_prawy)==odl_od_lewy  %blizej z prawej
              wyjazd=[end_l(w) end_l(k)-1];
           elseif min(odl_od_lewy,odl_od_prawy)==odl_od_prawy  %blizej z lewej
              wyjazd=[end_p(w) end_p(k)+1];
           end;
           mapa
end; % if(sum(roboty.....

    roboty(indeks).stan=5;  % pobieramy lelement
    
    
    if czekaj>0
        czekaj = czekaj - 1;
    else
        wyjazd;
        if  rezerwuj(1,indeks,wyjazd)==1 %udalo sie zarezerwowac wyjazd
        roboty(indeks).stan=0;
        pom = end_l(k);  % zmienna pomocnicza
        for j=1:8
            end_l(k)=pom+j-1;
           rezerwuj(0,indeks,end_l);
           roboty(indeks).maska_korytarza(j)=0;
        end;
        roboty(indeks).pozycja=wyjazd;
        ilosc_produktow=0; %zerujemy produkty itd..
        end_l = [0 0];
        end_p = [0 0];
        wyjazd = [0 0];
        
        end;
    
    
    end 

        

           
         
           


% funkcja jako argument przymuje numer produktu ktory sprawdzamy
% zwraca wspolrzedne miejsca w korytarzu bezposrednio zwiazanego
% z tym produktem oraz informacje czy produkt jest w ogole w korytarzu:
% 1 - jest w korytarzu
% 0 - nie ma go w korytarzu
function [nr_w,nr_k,czy_jest] = sprawdz_produkt(produkt,pozycja)

global mapa
global w;
global k;
% reprezentacja punktow na mapie np: 3004 gdzie 4 oznacza indeks tablicy w
% d�l (wiersz) a 3 oznacza indeksy tablic w prawo (kolumny)
nr_k = round(produkt/1000); % (kolumny)
nr_w = mod(produkt,1000); % (wiersze)

    if ((nr_k-pozycja(k))<=7 & (nr_k-pozycja(k))>=0 &(nr_w==pozycja(w)+1 | nr_w==pozycja(w)-1 )) 
        % produkt jest w korytarzu
        czy_jest=1;
    else
        czy_jest=0;
    end



